home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 007a / vpringeo.zip / VPRINT.DOC < prev   
Text File  |  1988-03-23  |  36KB  |  1,717 lines

  1.  
  2.  
  3.                                           READ
  4.                                           THIS
  5.                                          BEFORE
  6.                                         PRINTING!!!!
  7.  
  8.         This document has been formatted in a special way. Virtually all dot
  9.         matrix printers have a condensed mode which prints 132 characters
  10.         across a standard 8 1/2 inch page.  When this file is printed out in
  11.         condensed mode, the resulting printed pages can be cut down to 5 1/2 X
  12.         8 1/2 inches.  The cut pages will fit nicely in the back of your
  13.         DOS manual for storage.
  14.  
  15.         Typically, you can turn on this mode by sending a special control
  16.         sequence to the printer from BASIC.  For example, you can turn on the
  17.         condensed mode of the IBM/Epson printer with the BASIC statement:
  18.         LPRINT chr$(15).  If your printer has such a condensed mode, turn it
  19.         on now, before printing the rest of this document.
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.                                       (tm)
  76.                                  VPRINT
  77.  
  78.                          Virtual Printer Utility
  79.                       for the IBM Personal Computer
  80.  
  81.                               User's Manual
  82.                   (c) 1986, 1987, 1988 by David Whitman
  83.                               Version 5.00
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.     David Whitman
  109.     P.O. Box 1157
  110.     North Wales, PA 19454
  111.     (215) 234-4084 (evenings only)
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.                        Table of Contents
  138.  
  139.  
  140.  
  141.     What is VPRINT?.............................................1
  142.  
  143.     System Requirements.........................................2
  144.  
  145.     Starting VPRINT.............................................3
  146.  
  147.     Advanced Usage..............................................5
  148.  
  149.     Printer Emulation Options...................................7
  150.  
  151.     RS-232 Emulation Options....................................8
  152.  
  153.     Setting VPRINT's Buffer Size................................9
  154.  
  155.     Filter Options.............................................10
  156.  
  157.     Enable Options.............................................11
  158.  
  159.     Miscellaneous Options......................................12
  160.  
  161.     Software Compatibility.....................................13
  162.  
  163.     Programming Notes..........................................14
  164.  
  165.     Notes for Those Upgrading to This Version of VPRINT........17
  166.  
  167.     Miscellaneous and A Word From Our Sponsor..................18
  168.  
  169.     Registration Form..........................................22
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                                     1
  201.     >> What is VPRINT? <<
  202.  
  203.     VPRINT implements a "virtual printer" by capturing output
  204.     normally sent to your printer or COM port and redirecting it to a
  205.     file of your chosing.  There are many reasons you might want to
  206.     capture printer output:
  207.  
  208.        * Producing formatted files from software packages that don't
  209.          support "printing to disk".
  210.  
  211.        * Capturing output so it can be modified by other programs
  212.          prior to printing.
  213.  
  214.        * Setting up word processors and other programs to work with
  215.          your printer.  By capturing to disk, you can see exactly
  216.          what's being sent, and pinpoint problems immediately.
  217.  
  218.        * Capturing output generated on one computer, to be printed on
  219.          a different system.
  220.  
  221.        * Taking disk "snapshots" of your video screen.  When VPRINT
  222.          is running, the PrtSc key copies the screen to your disk
  223.          file.
  224.  
  225.        * Delaying printer output for later printing.  VPRINT responds
  226.          much faster than a "real" printer, but takes up much less
  227.          memory than most print spooling software.  If you can't
  228.          afford the memory for a print spooler, you can VPRINT
  229.          quickly, then print the file later during a time when your
  230.          computer is idle.
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                                     2
  267.  
  268.     >> System Requirements <<
  269.  
  270.     To run VPRINT, you need:
  271.  
  272.         IBM PC
  273.  
  274.         64K of memory, minimum
  275.  
  276.         1 disk drive, minimum
  277.  
  278.         DOS 2.0 or later
  279.  
  280.     VPRINT is designed to run on IBM PCs, but should run on all
  281.     systems that are compatible with the IBM BIOS.
  282.  
  283.     The following systems are known to run VPRINT successfully.  If
  284.     you are using VPRINT on a computer not on this list, please
  285.     write, and the list will be updated so that others can share this
  286.     information.
  287.  
  288.            IBM PC
  289.            IBM XT
  290.            IBM 3270 PC
  291.            IBM 3270 PC/G
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                                                     3
  333.  
  334.     >> Starting VPRINT <<
  335.  
  336.     To capture printer output, you must "install" VPRINT.
  337.     Installation temporarily grafts a portion of VPRINT onto your
  338.     computer's input/output system.  Once installed, VPRINT remains a
  339.     part of the I/O system until you either shut your computer off,
  340.     or reset the system by pressing Ctrl-Alt-Del.
  341.  
  342.     To install VPRINT, type:
  343.  
  344.         VPRINT filename.ext  /i
  345.  
  346.     Use whatever filename you'd like printer output to be sent to.
  347.     The filename can optionally have a drive and/or pathname.  If you
  348.     don't use a filename, VPRINT will create a file named
  349.     VIRTUAL.PRN for you in the root directory of the default drive.
  350.  
  351.     The "/i" tells VPRINT that you want to install the program, and
  352.     if a filename is used, the "/i" must come AFTER the filename.
  353.  
  354.     After you type the above command, VPRINT will respond:
  355.  
  356.          VPRINT - virtual printer (version 5.00)
  357.  
  358.          User-supported software by D. Whitman
  359.          For help/info, type VPRINT ?
  360.  
  361.          Current Status:
  362.  
  363.             Redirection:         ENABLED
  364.             Emulated printers:   LPT1: and LPT2:
  365.             Emulated async port: None
  366.             Filter mode:         VERBATIM
  367.             Buffer size:         2048 bytes
  368.             Print file:          C:\VIRTUAL.PRN 
  369.  
  370.          Resident section has been installed.
  371.  
  372.     As programs attempt to send output to your printer, VPRINT
  373.     intercepts the output, and stores it in an internal buffer. Every
  374.     time this buffer fills up, VPRINT dumps the buffer to the file
  375.     you specified during installation.
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                                                                     4
  399.     After you have finished your printing, the buffer may still
  400.     contain some of your output, not yet transferred to disk.  Before
  401.     using the output file, you should ask VPRINT to "flush" the
  402.     buffer, using the command:
  403.  
  404.          VPRINT /f
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                                                                     5
  465.     >> Advanced Usage <<
  466.  
  467.     The procedure given in the previous section will allow you to
  468.     capture printer output from most software packages, but does not
  469.     make use of all of VPRINT's capabilities.  This section will
  470.     discuss these further options.
  471.  
  472.     The VPRINT command has the following syntax:
  473.  
  474.        VPRINT [?] [d:][path][filename[.ext]]] /options
  475.  
  476.     If you type VPRINT ?, a one page help screen will be printed.
  477.  
  478.     You can specify a fully qualified file name, including drive and
  479.     path.  After installation, you can change the active printer file
  480.     by running VPRINT with a different filename.  This modifies the
  481.     resident code without loading a new copy or using more memory.
  482.  
  483.     VPRINT's options all start with a slash character "/" followed by
  484.     a single letter or number.  If a filename is used, the options
  485.     must come AFTER the filename.  Multiple options can be used.  The
  486.     following options are available:
  487.  
  488.         /i      install (required to load resident code)
  489.         /bnn    set buffer size in Kbytes: nn = 1-64 (defaults to 2)
  490.         /f      flush - empty any buffered output to disk
  491.         /s      report status
  492.  
  493.         /p1     emulate LPT1:
  494.         /p2     emulate LPT2:
  495.         /p3     emulate both printers (default)
  496.         /pp     emulate PrtSc only 
  497.         /p0     don't emulate LPT ports
  498.  
  499.         /a1     emulate COM1: (AUX:)
  500.         /a2     emulate COM2:
  501.         /a3     emulate both COM1: and COM2:
  502.         /a0     don't emulate COM ports (default)
  503.  
  504.         /n      neutral - don't filter output (default)
  505.         /l      drop LFs, expand CR to CR LF
  506.         /c      drop CRs, expand LF to CR LF
  507.  
  508.         /d      disable - flush buffer, use physical devices
  509.         /e      enable - use virtual printer again, after /d
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.                                                                     6
  531.  
  532.     Again, like the filename, you can install VPRINT using one set of
  533.     options, then change by running VPRINT again with different
  534.     options.  The new options will modify the resident code without
  535.     using more memory.  The following sections will discuss these
  536.     options in more detail.
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                                                                     7
  597.     >> Printer Emulation Options <<
  598.  
  599.     You can control which printer port(s) VPRINT emulates.  By
  600.     default, VPRINT redirects printer output intended for both LPT1:
  601.     and LPT2:.  You can restrict this to only one printer using
  602.     options /p1 and /p2 , or capture just PrtSc output with option
  603.     /pp.
  604.  
  605.     For example, if you only want to capture output from LPT1:, you
  606.     would install VPRINT like this:
  607.  
  608.         VPRINT /i /p1
  609.  
  610.     Alternatively, if VPRINT is already installed, you can restrict
  611.     capture to LPT2: with this command:
  612.  
  613.         VPRINT /p2
  614.  
  615.     To only capture only screen print output, use the command:
  616.  
  617.         VPRINT /pp
  618.  
  619.     Note: Selective trapping of PrtSc may only work on IBM PCs or
  620.           extremely faithful clones.
  621.  
  622.     The /p3 option returns you to the default state, where output to
  623.     both printer ports is captured.
  624.  
  625.     You can turn off printer emulation altogether using option /p0.
  626.     This option is provided for use during RS-232 emulation.  (See
  627.     next section.)
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.                                                                     8
  663.     >>RS-232 Emulation Options<<
  664.  
  665.     VPRINT can also trap output sent to your computer's RS-232 ports.
  666.     This allows you to redirect output to serial printers or
  667.     plotters.  Only *output* is affected - input from the COM port is
  668.     handled normally.
  669.  
  670.     By default, RS-232 emulation is turned off.  You can install
  671.     VPRINT to redirect COM1: output with the following command:
  672.  
  673.           VPRINT /i /a1
  674.  
  675.     Similar to the parallel printer emulation options, you can select
  676.     just COM2: with option /a2, both COM ports with /a3, or neither
  677.     with /a0.
  678.  
  679.     You may prefer to turn off parallel printer emulation with option
  680.     /p0 when using RS-232 emulation, to avoid mixing output for the
  681.     two types of devices.
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.                                                                     9
  729.     >>Setting VPRINT's Buffer Size<<
  730.  
  731.     By default, VPRINT sets up an internal buffer capable of holding
  732.     2048 characters.  This value was determined experimentally to
  733.     give the quickest operation while using the minimum of memory on
  734.     the author's system.
  735.  
  736.     If your print jobs are small, but larger than VPRINT's default 2K
  737.     buffer, you can maximize speed by specifying a buffer big enough
  738.     to hold the entire job, and eliminate disk access during
  739.     printing.
  740.  
  741.     Compatibility with certain software packages may require you to
  742.     install VPRINT with a larger buffer size.  If a program you're
  743.     running complains about your printer not being ready, or hangs up
  744.     when printing with VPRINT installed, reboot and try again with a
  745.     larger buffer.  If you can spare the memory, a buffer size of 64K
  746.     should allow VPRINT to work with absolutely any software.  See
  747.     the section titled "Software Compatibility" for more discussion
  748.     on this issue.
  749.  
  750.     You can change VPRINT's default buffer size during installation,
  751.     by using option /B.  For example, the following command installs
  752.     VPRINT with a buffer size of 16K:
  753.  
  754.              VPRINT /i /b16
  755.  
  756.     You can specify buffer sizes from 1 to 64K.  If you specify a
  757.     value larger than 64, VPRINT will give you a buffer size of 64K.
  758.     A buffer size of less than one is forced up to 1K.
  759.  
  760.     Unlike VPRINT's other options, once the buffer size is set, you
  761.     can't modify it without rebooting your computer and reinstalling
  762.     VPRINT.
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.                                                                    10
  795.  
  796.     >> Filter Options <<
  797.  
  798.     By default, VPRINT stores to disk exactly what is being sent to
  799.     your printer.  However, under certain circumstances, it is
  800.     desirable to "filter" the output slightly.
  801.  
  802.     Standard DOS files end each line with a carriage return character
  803.     (CR), followed by a line feed character (LF).  Many programs,
  804.     including most word processors, will require files to be in this
  805.     format.  Unfortunately, when sending output to a printer, not all
  806.     programs terminate lines with a CR LF pair.
  807.  
  808.     For example, Volkswriter sends only line feeds at the end of
  809.     blank lines.  This works fine when sent to a printer, but if
  810.     captured to a file, the resulting file will look very strange
  811.     when re-edited. (Multiple blank lines disappear, and are replaced
  812.     with a single line full of boxes with holes in them -the screen
  813.     representation of the line feed character.)
  814.  
  815.     At least on older PC's, the PrtSc function acts even stranger.
  816.     PrtSc terminates each line exactly backwards, with a LF followed
  817.     by a CR.  This combination will confuse most text editors,
  818.     causing very strange behavior.
  819.  
  820.     VPRINT has two "filtering" modes which tend to force printed
  821.     output into standard DOS format.  These modes ignore either CRs
  822.     or LFs, while replacing the other character with a CR LF pair.
  823.  
  824.     Option /C ignores carriage returns, and expands LF to CR LF.
  825.     Similarly, /L ignores printed line feeds, but adds one after each
  826.     CR.
  827.  
  828.     If your captured output looks strange, try turning on the
  829.     different filtering modes and see if your output looks more
  830.     normal.
  831.  
  832.     You can turn off filtering with the /N option.  After /N is in
  833.     effect, output will again be captured verbatim.
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.                                                                    11
  861.  
  862.     >> Enable Options <<
  863.  
  864.     Once VPRINT is installed, it remains a part of your computer's
  865.     input/output system until you either turn off your computer or
  866.     re-boot.  However, VPRINT can be temporarily disabled to allow
  867.     output to go to your printer as usual.
  868.  
  869.     Option /D disables VPRINT.  When /D is in effect, VPRINT remains
  870.     resident, but passes output unmodified to your printer.  Option
  871.     /D also flushes VPRINT's internal buffer, so that all your output
  872.     is available on disk.
  873.  
  874.     Option /E enables VPRINT, presumably after it's been disabled
  875.     with option /D.  When option /E is in effect, printer output is
  876.     once again redirected to your disk file.
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.                                                                    12
  927.     >> Miscellaneous Options <<
  928.  
  929.     A short help summary will be printed if you type VPRINT ?, or
  930.     just VPRINT with no other options.
  931.  
  932.     The /I option installs VPRINT.  This option loads VPRINT's
  933.     resident code, and grafts it onto the I/O system of your
  934.     computer.  Once VPRINT is loaded, there is no need to specify
  935.     /I on subsequent commands.  If you use /I when the resident code
  936.     is already loaded, VPRINT will detect the resident code and will
  937.     print an error message without re-loading.
  938.  
  939.     Option /F flushes VPRINT's internal buffer to disk.  To avoid
  940.     constantly running your disk drive during printing, VPRINT
  941.     collects about 2000 characters, then writes them to disk all at
  942.     once.  Unless you output an exact multiple of 2048 characters,
  943.     when printing is finished, part of your output is still in
  944.     VPRINT's internal buffer.  Option /F forces the last part of your
  945.     output to disk.
  946.  
  947.     Incidentally, VPRINT's internal buffer is automatically flushed
  948.     before shifting to a new file, and also before disabling, if you
  949.     turn on option /D.
  950.  
  951.     Option /S prints a status report, indicating which options are in
  952.     effect, and where your printed output is being sent.  This is the
  953.     same report which is printed after using any of the other
  954.     options, but /S allows you to check status without changing
  955.     anything.
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.                                                                    13
  993.     >> Software Compatibility <<
  994.  
  995.     VPRINT is compatible with essentially all software which can run
  996.     under DOS.  However, certain programs may require you to install
  997.     VPRINT with a larger buffer than the default 2048 bytes.
  998.  
  999.     If a software package over-runs VPRINT's buffer, VPRINT sends
  1000.     signals back to your program that your "printer" has gone
  1001.     off-line.  Upon receiving such signals, most software will stop
  1002.     printing, and ask you to correct the problem.  If this happens,
  1003.     abort the print and exit the program, then re-boot your computer.
  1004.  
  1005.     If your software ignores the signals, rather than getting an
  1006.     error message about your printer going off-line, your computer
  1007.     may lock up and cease to respond to the keyboard.  If you get
  1008.     such a lock-up, just turn your computer off, wait 5 seconds, then
  1009.     turn it on again.
  1010.  
  1011.     In either case, try installing VPRINT with a larger buffer size.
  1012.     The exact size needed will vary from program to program.  If
  1013.     you're having trouble and can spare the memory, use a buffer size
  1014.     of 64K.  DOS limits programs to printing 64K or less of data at
  1015.     once, so a 64K buffer guarantees that VPRINT can handle anything
  1016.     your software can throw at it.
  1017.  
  1018.     Sometimes when you examine your captured output, you'll see lots
  1019.     of strange characters mixed in with your text.  These are control
  1020.     characters sent by your software to set up and control your
  1021.     printer.  If you install your software to use a "generic" or
  1022.     "unknown" printer, you can usually eliminate these characters.
  1023.     You can also use VPRINT's filtering modes to correct the use of
  1024.     carriage return and line feed characters.
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.                                                                    14
  1059.     >> Programming Notes <<
  1060.  
  1061.     You can use VPRINT effectively without reading or understanding
  1062.     this section.  However, many users have expressed interest in how
  1063.     VPRINT works, and this section is provided for their benefit.
  1064.  
  1065.     VPRINT is written in assembly language for maximum speed and
  1066.     minimum size.  The source code is available to registered users
  1067.     by sending a formatted disk and a stamped return mailer.   The
  1068.     source code is in the syntax of the CHASM assembler, which is
  1069.     another product of Whitman Software.  A one page advertisement
  1070.     for CHASM is given near the end of this document.
  1071.  
  1072.     Please note that VPRINT's source code is provided for educational
  1073.     purposes, and to allow you to customize for your own use.  Under
  1074.     NO CIRCUMSTANCES may you distribute modified or translated
  1075.     versions, either in the public domain or for profit.
  1076.  
  1077.     Upon installation, VPRINT takes over the following interrupt
  1078.     vectors:
  1079.  
  1080.           INT 14H - BIOS routine RS232_IO
  1081.           INT 17H - BIOS routine PRINTER_IO
  1082.           INT 21H - DOS function dispatcher
  1083.           INT 28H - DOS_IDLE
  1084.  
  1085.     Vectors 14H and 17H are the low level BIOS routines handling
  1086.     output to RS-232 ports and parallel ports respectively.  VPRINT
  1087.     traps output by monitoring these interrupts, and stores the
  1088.     output in its buffer.  Essentially all software interfaces to
  1089.     devices directly or indirectly through these interrupts.
  1090.     However, any software which bypasses the BIOS for output will be
  1091.     unaffected by VPRINT.
  1092.  
  1093.     Safely emptying VPRINT's buffer turns out to be much harder than
  1094.     filling it.  DOS is not re-entrant, which means that it isn't
  1095.     necessarily safe for a memory resident program to call DOS for
  1096.     services such as disk i/o.  If DOS is already in the midst of
  1097.     processing a function call, a new call will clobber one of DOS's
  1098.     internal stacks and crash the system.
  1099.  
  1100.     Unfortunately, if a program is well behaved and uses DOS services
  1101.     rather than direct BIOS calls for output, DOS is going to be busy
  1102.     whenever VPRINT's interrupt 17H or interrupt 14H handlers are
  1103.     active.  VPRINT uses several different tricks to get around this
  1104.     problem.
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.                                                                    15
  1125.  
  1126.     DOS maintains an undocumented flag which indicates whether a call
  1127.     would be re-entrant.  Although undocumented, DOS_CRITICAL is
  1128.     reasonably well understood, and used by many memory resident
  1129.     programs.  During installation, VPRINT gets a pointer to
  1130.     DOS_CRITICAL using an undocumented (but again, well understood
  1131.     and commonly used) DOS function.  If VPRINT's buffer is more than
  1132.     half full when a character is received for printing, VPRINT
  1133.     checks DOS_CRITICAL, and if it's safe, the buffer is emptied to
  1134.     disk.
  1135.  
  1136.     A second trick is taking over interrupt 28H, DOS_IDLE.  This is
  1137.     an undocumented DOS interrupt which is called during keyboard
  1138.     input and other periods when DOS has some time to kill.  With
  1139.     certain restrictions, it is safe to call DOS during interrupt 28H
  1140.     processing, even if DOS_CRITICAL is set.  The spooler program
  1141.     PRINT supplied with DOS functions by intercepting interrupt 28H.
  1142.     VPRINT monitors interrupt 28H and dumps the buffer if it's more
  1143.     than half full.
  1144.  
  1145.     VPRINT's last trick is intercepting calls to the DOS function
  1146.     dispatcher, interrupt 21H.  If VPRINT's buffer is more than half
  1147.     full when interrupt 21H is called, an attempt is made to empty
  1148.     the buffer.  This attempt is almost guaranteed to be successful,
  1149.     since DOS can't be active - by taking over the function
  1150.     dispatcher, we get a chance to do some i/o before DOS ever sees
  1151.     any other request for services and becomes busy.
  1152.  
  1153.     VPRINT's interrupt 21H handler still monitors DOS_CRITICAL before
  1154.     attempting output, to guard against the chance of some other
  1155.     memory resident routine making a re-entrant call, and fooling
  1156.     VPRINT into thinking i/o was safe.
  1157.  
  1158.     As a final bit of insurance, the interrupt 21H handler watches
  1159.     for any output request, even if it's not obviously printer or
  1160.     RS-232 related.  If a request comes to output a block that
  1161.     wouldn't fit in VPRINT's buffer, the buffer is emptied even if
  1162.     the buffer is less than half full.  Since the DOS WRITE_BLOCK
  1163.     function can only handle blocks up to 64K, if VPRINT is installed
  1164.     with a 64K buffer, we should be able to handle any output a
  1165.     program sends.
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.                                                                    16
  1191.     To change options in the resident code, VPRINT examines the
  1192.     vector for interrupt 17H, then searches at the specified location
  1193.     for a "recognition string".   If this recognition string is not
  1194.     matched, changes are aborted.  If you load another memory
  1195.     resident program after VPRINT that intercepts interrupt 17H, you
  1196.     will not be able to change options or files used by the resident
  1197.     part of VPRINT.
  1198.  
  1199.     Selective trapping of PrtSc output is performed by monitoring a
  1200.     IBM documented flag in the BIOS data area: STATUS_BYTE at
  1201.     0050:0000.  This flag contains a non-zero value if a PrtSc
  1202.     operation is in progress.  Clones with a non-IBM BIOS may or may
  1203.     not maintain this flag at the same location, hence VPRINT's /PP
  1204.     option may not work on all clones.
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.                                                                    17
  1257.     >> Notes for Those Upgrading to This Version of VPRINT <<
  1258.  
  1259.     VPRINT is not yet carved in stone - improvements and corrections
  1260.     are made fairly frequently, based on both my own experience using
  1261.     the program, and the comments of outside users.  This section
  1262.     summarizes the changes which have been made since version 1.00
  1263.     was released.
  1264.  
  1265.     Version   Notes
  1266.  
  1267.        1.00   Very primitive DOS 1 version, to upgrade the original
  1268.               EasyWriter - at one point, the only available word
  1269.               processor for the IBM.  Veteran PC users still shudder
  1270.               when EasyWriter 1 is mentioned; among many other
  1271.               defects, it wouldn't print to disk.
  1272.  
  1273.        2.00   Updated DOS 2 version, not released
  1274.  
  1275.        2.01   Released as U/S
  1276.  
  1277.        3.00   Add int 28H buffer dump, add harmless output mode to
  1278.               watch dos critical flag before writes.
  1279.  
  1280.        3.01   Corrected bug in VPRINT's dos critical byte handling
  1281.  
  1282.        3.02   Add selective trapping of PrtSc operation
  1283.  
  1284.        4.00   Add int 21H buffer dump, variable buffer size, and kill
  1285.               off VPRINT's risky output mode, since harmless mode is
  1286.               now powerful enough for all programs.
  1287.  
  1288.        5.00   Add emulation of RS-232 output
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.                                                                    18
  1323.  
  1324.     >> Miscellaneous and a Word From Our Sponsor...<<
  1325.  
  1326.     A. Red Tape and Legal Nonsense:
  1327.  
  1328.        1. Disclaimer:
  1329.  
  1330.           VPRINT is distributed as is, with no guarantee that it will
  1331.           work correctly in all situations.  In no event will the
  1332.           Author be liable for any damages, including lost profits,
  1333.           lost savings or other incidental or consequential damages
  1334.           arising out of the use of or inability to use this program,
  1335.           even if the Author has been advised of the possibility of
  1336.           such damages, or for any claim by any other party.
  1337.  
  1338.           Despite the somewhat imposing statement above, it *is* my
  1339.           intention to fix any bugs which are brought to my
  1340.           attention.
  1341.  
  1342.        2. Copyright Information
  1343.  
  1344.           The entire VPRINT distribution package, consisting of the
  1345.           program, documentation file, and source code file are
  1346.           copyright (c) 1986, 1987 and 1988 by David Whitman.  The
  1347.           author reserves the exclusive right to distribute this
  1348.           package, or any part thereof, for profit.  The name VPRINT
  1349.           (tm) applied to a microcomputer printer redirection utility
  1350.           is a trade mark of David Whitman.
  1351.  
  1352.           The VPRINT package (with the exception of the source code
  1353.           file VPRINT.ASM) may be freely copied by individuals for
  1354.           evaluation purposes.  It is expected that those who find
  1355.           the package useful will make a contribution directly to the
  1356.           author of the program.
  1357.  
  1358.           VPRINT's source code is made available to registered users
  1359.           for educational purposes and to allow them to customize for
  1360.           their own personal use.  The source code file is available
  1361.           only to those who make the suggested payment for use of
  1362.           VPRINT.  Under NO CIRCUMSTANCES may modified versions or
  1363.           translations into other computer languages be distributed,
  1364.           either for profit or in the public domain.
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.                                                                    19
  1389.  
  1390.           User's groups, clubs, libraries and clearing houses are
  1391.           authorized to distribute VPRINT under the following
  1392.           conditions:
  1393.  
  1394.           1. No charge is made for the software or documentation.  A
  1395.              nominal distribution fee may be charged, provided that
  1396.              is no more that $8 total.
  1397.  
  1398.           2. Recipients are to be informed of the user-supported
  1399.              software concept, and encouraged to support it with
  1400.              their donations.
  1401.  
  1402.           3. The program and documentation are distributed together
  1403.              and are not modified in ANY way.
  1404.  
  1405.           4. The source code file VPRINT.ASM or disassemblies of
  1406.              VPRINT.COM may not be distributed.
  1407.  
  1408.     B. An Offer You Can't Refuse.
  1409.  
  1410.        VPRINT is user-supported software, distributed under a system
  1411.        identical to the FREEWARE (tm) marketing scheme developed by
  1412.        the late Andrew Flugelman, whose efforts are gratefully
  1413.        acknowledged.
  1414.  
  1415.        Anyone may obtain a free copy of VPRINT by sending a blank,
  1416.        formatted diskette to the author.  An addressed, postage-paid
  1417.        return mailer must accompany the disk (no exceptions, please).
  1418.  
  1419.        A copy of the program, with documentation, will be sent by
  1420.        return mail.  The program will carry a notice suggesting a
  1421.        payment to the program's author.  Making the payment is
  1422.        totally voluntary on the part of the user.  Regardless of
  1423.        whether a payment is made, the user is encouraged to share the
  1424.        program with others.  Payment for use is discretionary on the
  1425.        part of each subsequent user.
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.                                                                    20
  1455.  
  1456.        The underlying philosophy here is based on the following
  1457.        principles:
  1458.  
  1459.        First, that the value and utility of software is best assessed
  1460.           by the user on his/her own system.  Only after using a
  1461.           program can one really determine whether it serves personal
  1462.           applications, needs, and tastes.
  1463.  
  1464.        Second, that the creation of independent personal computer
  1465.           software can and should be supported by those who benefit
  1466.           from its use.  Remember the Tanstaafl principal: There
  1467.           Ain't No Such Thing As A Free Lunch.  Support to authors
  1468.           encourages the continued creation of novel, low cost
  1469.           software.
  1470.  
  1471.        Finally, that copying and networking of programs should be
  1472.           encouraged, rather than restricted.  The ease with which
  1473.           software can be distributed outside traditional commercial
  1474.           channels reflects the strength, rather than the weakness,
  1475.           of electronic information.
  1476.  
  1477.     If you like this software, please help support it.  Your support
  1478.     can take three forms:
  1479.  
  1480.         1. Become a registered user.  The suggested payment for
  1481.            registration is $20.
  1482.  
  1483.         2. Suggestions, comments and bug reports.  Your comments will
  1484.            be taken seriously.  VPRINT will evolve over time, based
  1485.            on the feedback of users.
  1486.  
  1487.         3. Spread the word.  Make copies for friends, or send the
  1488.            program to your favorite BBS.  Astronomical advertising
  1489.            costs are one big reason that commercial software is so
  1490.            overpriced.  To continue offering VPRINT this way, I need
  1491.            your help in letting other people know about VPRINT.
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.                                                                    21
  1521.  
  1522.     Those who make the suggested $20 payment to become registered
  1523.     users receive the following benefits:
  1524.  
  1525.         1. Access to VPRINT's heavily commented source code.
  1526.  
  1527.         2. User support, by phone or mail.  SUPPORT IS ONLY AVAILABLE
  1528.            TO REGISTERED USERS.
  1529.  
  1530.         3. Notices of significant upgrades.
  1531.  
  1532.         4. A warm, fuzzy feeling of having done the right thing.  The
  1533.            converse is also true.  If you continue to use VPRINT
  1534.            without making the suggested payment, your self-image will
  1535.            gradually deteriorate until you wake up one day in the
  1536.            gutter on Skid Row, grubbing for cigarette butts and
  1537.            discarded floppy disks.  Honest.
  1538.  
  1539.     This documentation file was written using Volkswriter 3, then
  1540.     printed and captured by VPRINT to eliminate Volkswriter's special
  1541.     effects markers and get proper pagination.  Option /C was in
  1542.     effect to force line feeds into CR/LF pairs.
  1543.  
  1544.  
  1545.            - Dave Whitman
  1546.  
  1547.              Whitman Software
  1548.              P.O. Box 1157
  1549.              North Wales, PA  19454
  1550.  
  1551.              (215) 234-4084 (evenings only)
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.                                                                    22
  1587.  
  1588.              >> Registration Form (version 5.00)<<
  1589.  
  1590.  
  1591.     Please send me a copy of the current version of VPRINT, and
  1592.     add me to the list of registered VPRINT users, to be eligible for
  1593.     phone support and upgrade notices.  I enclose a check for $20.
  1594.  
  1595.     Note: VPRINT requires DOS 2 or later to run.
  1596.  
  1597.  
  1598.     Computer Model: ______________________________
  1599.  
  1600.     Diskette Format:   ____ single    _____ double sided
  1601.  
  1602.     ===============================================================
  1603.  
  1604.     Name:             ______________________________________
  1605.  
  1606.     Address:          ______________________________________
  1607.  
  1608.     City, State, Zip: ______________________________________
  1609.  
  1610.     ==============================================================
  1611.  
  1612.     Where did you hear about VPRINT? _______________________
  1613.  
  1614.     ==============================================================
  1615.  
  1616.  
  1617.      Send registration form and check to:
  1618.  
  1619.           Whitman Software
  1620.           P.O. Box 1157
  1621.           North Wales, PA  19454
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.                                                                    23
  1653.  
  1654.  
  1655.                   >> Also Available  <<
  1656.  
  1657.     CHASM is a full featured assembler for the IBM PC.
  1658.     Substantially simpler than the IBM macro assembler, CHASM is
  1659.     particularly suited for those learning assembly language.
  1660.  
  1661.     Using CHASM you can:
  1662.  
  1663.        * Learn 8088 / 8086 / 8087 assembly language.
  1664.  
  1665.        * Explore the inner workings of the IBM PC.
  1666.  
  1667.        * Write lighting-fast stand alone programs.
  1668.  
  1669.        * Produce machine language subroutines for BASIC programs.
  1670.  
  1671.        * Write external procedures or inline code for Turbo Pascal.
  1672.  
  1673.     Although easy enough for beginners, CHASM is powerful enough for
  1674.     production coding.  VPRINT was assembled using CHASM.
  1675.  
  1676.     CHASM features macros, conditional assembly, structured
  1677.     variables, operand expressions and much more.  A free evaluation
  1678.     version can be obtained by sending a formatted disk and stamped
  1679.     return mailer to:
  1680.  
  1681.              Whitman Software
  1682.              P.O. Box 1157
  1683.              North Wales, PA 19454
  1684.  
  1685.     A payment of $40 is requested from those who find the program
  1686.     useful.  Those who make this payment are upgraded to a version
  1687.     which runs twice as fast.
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.